package com.education.platform.service;

import com.education.platform.entity.SystemConfig;

import java.util.List;
import java.util.Map;

/**
 * 系统配置服务接口
 *
 * @author education-platform
 * @since 2024-09-27
 */
public interface SystemConfigService {

    /**
     * 创建配置
     */
    Long createConfig(SystemConfig systemConfig);

    /**
     * 更新配置
     */
    void updateConfig(Long id, SystemConfig systemConfig);

    /**
     * 删除配置
     */
    void deleteConfig(Long id);

    /**
     * 根据ID获取配置
     */
    SystemConfig getConfigById(Long id);

    /**
     * 根据配置键获取配置
     */
    SystemConfig getConfigByKey(String configKey);

    /**
     * 根据配置键获取配置值
     */
    String getConfigValue(String configKey);

    /**
     * 根据配置键获取配置值（带默认值）
     */
    String getConfigValue(String configKey, String defaultValue);

    /**
     * 设置配置值
     */
    void setConfigValue(String configKey, String configValue);

    /**
     * 获取所有配置
     */
    List<SystemConfig> getAllConfigs();

    /**
     * 获取所有公开配置
     */
    List<SystemConfig> getPublicConfigs();

    /**
     * 获取公开配置Map
     */
    Map<String, String> getPublicConfigMap();

    /**
     * 根据配置类型获取配置
     */
    List<SystemConfig> getConfigsByType(String configType);

    /**
     * 批量更新配置
     */
    void batchUpdateConfigs(Map<String, String> configMap);
}

